import { get, post, put, del } from '@/utils/axios'

/**
 * 购物车相关API（用户隔离模式 - 后端从Session获取当前用户）
 */
export default {
  /**
   * 添加商品到购物车
   * ✅ 后端从Session获取当前用户，无需传递username
   * @param {Object} data - 购物车商品数据
   * @param {number} data.productId - 商品ID
   * @param {number} data.quantity - 数量
   * @returns {Promise}
   */
  async addToCart(data) {
    try {
      const response = await post('/order/cart/add', data)
      return response
    } catch (error) {
      console.error('添加购物车失败:', error)
      throw error
    }
  },

  /**
   * 获取购物车列表（当前用户的购物车 - 用户隔离）
   * ✅ 后端从Session获取当前用户，返回当前用户的购物车
   * @param {number} current - 当前页
   * @param {number} size - 页大小
   * @returns {Promise}
   */
  async getCartList(current = 1, size = 10) {
    try {
      const response = await get('/order/cart/list', { current, size })
      return response
    } catch (error) {
      console.error('获取购物车列表失败:', error)
      throw error
    }
  },

  /**
   * 更新购物车商品数量
   * ✅ 后端从Session获取当前用户，只能更新自己的购物车
   * @param {Object} data - 更新数据
   * @param {number} data.cartId - 购物车ID
   * @param {number} data.quantity - 新数量
   * @returns {Promise}
   */
  async updateCartQuantity(data) {
    try {
      const response = await put('/order/cart/update', data)
      return response
    } catch (error) {
      console.error('更新购物车数量失败:', error)
      throw error
    }
  },

  /**
   * 删除购物车商品
   * ✅ 后端从Session获取当前用户，只能删除自己的购物车商品
   * @param {number} cartId - 购物车ID
   * @returns {Promise}
   */
  async removeFromCart(cartId) {
    try {
      const response = await del(`/order/cart/${cartId}`)
      return response
    } catch (error) {
      console.error('删除购物车商品失败:', error)
      throw error
    }
  },

  /**
   * 批量删除购物车商品
   * ✅ 修复：使用DELETE方法，路径改为/order/cart/batch，移除username参数
   * @param {Array} cartIds - 购物车ID数组
   * @returns {Promise}
   */
  async batchRemoveFromCart(cartIds) {
    try {
      const response = await del('/order/cart/batch', {
        data: { cartIds: cartIds }
      })
      return response
    } catch (error) {
      console.error('批量删除购物车商品失败:', error)
      throw error
    }
  },

  /**
   * 购物车结算
   * ✅ 后端从Session获取当前用户，生成当前用户的订单
   * @param {Object} data - 结算数据
   * @param {Array} data.cartIds - 购物车ID数组
   * @returns {Promise}
   */
  async checkoutCart(data) {
    try {
      const response = await post('/order/cart/checkout', data)
      return response
    } catch (error) {
      console.error('购物车结算失败:', error)
      throw error
    }
  }
}
